/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.com.foxinline.manager.pesquisar;

import br.com.foxinline.modelo.Curso;
import br.com.foxinline.modelo.Disciplina;
import br.com.foxinline.servico.CursoServico;
import br.com.foxinline.servico.DisciplinaServico;
import br.com.foxinline.servico.UsuarioServico;
import br.com.foxinline.utilitario.Msg;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;

/**
 *
 * @author laverson
 */
@ViewScoped
@ManagedBean
public class ManagerPesquisarDisciplina implements Serializable {

    @EJB
    DisciplinaServico disciplinaServico;
    @EJB
    CursoServico cursoServico;
    @EJB
    UsuarioServico usuarioServico;
    private Disciplina disciplinaPesquisar;
    private Disciplina disciplinaEditar;
    private Disciplina disciplinaVisualizar;
    private Disciplina disciplinaDelete;
    private List<Disciplina> disciplinas;
    private Curso curso;
    private Curso cursoEditar;
    private Curso cursoPesquisar;
    private List<Curso> cursos;
    private String eDisciplina;
    private String vDisciplina;

    @PostConstruct
    public void init() {
        disciplinaPesquisar = new Disciplina();
        cursoPesquisar = isAdmin() ? new Curso() : usuarioServico.getCurrentUser().getCurso();
        cursos = cursoServico.pesquisarTodos();

        Map<String, String> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
        eDisciplina = params.get("eDisciplina");
        vDisciplina = params.get("vDisciplina");
        paramPost();
    }

    public void paramPost() {
        if (eDisciplina != null) {
            disciplinaEditar = disciplinaServico.pesquisar(Long.parseLong(eDisciplina));
            cursoEditar = disciplinaEditar != null ? disciplinaEditar.getCurso() : new Curso();
        }
        if (vDisciplina != null) {
            disciplinaVisualizar = disciplinaServico.pesquisar(Long.parseLong(vDisciplina));
        }
    }

    public void pesquisar() {
        disciplinaPesquisar.setCurso(cursoPesquisar);
        disciplinas = disciplinaServico.pesquisar(disciplinaPesquisar);
    }

    public void atualizar() {
        try {
            disciplinaEditar.setCurso(cursoEditar);
            disciplinaServico.atualizar(disciplinaEditar);
            Msg.messagemInfo(Msg.SuccessFull);
        } catch (Exception e) {
            e.printStackTrace();
            Msg.messagemError(Msg.Failure);
        }
    }
    
    public boolean isAdmin(){
        return usuarioServico.isAdmin();
    }

    public void deletar() {
        disciplinaServico.deletar(disciplinaDelete);
        disciplinas.remove(disciplinaDelete);
    }

    public Disciplina getDisciplinaDelete() {
        return disciplinaDelete;
    }

    public void setDisciplinaDelete(Disciplina disciplinaDelete) {
        this.disciplinaDelete = disciplinaDelete;
    }

    public Disciplina getDisciplinaEditar() {
        return disciplinaEditar;
    }

    public void setDisciplinaEditar(Disciplina disciplinaEditar) {
        this.disciplinaEditar = disciplinaEditar;
    }

    public Disciplina getDisciplinaPesquisar() {
        return disciplinaPesquisar;
    }

    public void setDisciplinaPesquisar(Disciplina disciplinaPesquisar) {
        this.disciplinaPesquisar = disciplinaPesquisar;
    }

    public Disciplina getDisciplinaVisualizar() {
        return disciplinaVisualizar;
    }

    public void setDisciplinaVisualizar(Disciplina disciplinaVisualizar) {
        this.disciplinaVisualizar = disciplinaVisualizar;
    }

    public List<Disciplina> getDisciplinas() {
        return disciplinas;
    }

    public void setDisciplinas(List<Disciplina> disciplinas) {
        this.disciplinas = disciplinas;
    }

    public Curso getCurso() {
        return curso;
    }

    public void setCurso(Curso curso) {
        this.curso = curso;
    }

    public Curso getCursoEditar() {
        return cursoEditar;
    }

    public void setCursoEditar(Curso cursoEditar) {
        this.cursoEditar = cursoEditar;
    }

    public Curso getCursoPesquisar() {
        return cursoPesquisar;
    }

    public void setCursoPesquisar(Curso cursoPesquisar) {
        this.cursoPesquisar = cursoPesquisar;
    }

    public List<Curso> getCursos() {
        return cursos;
    }

    public void setCursos(List<Curso> cursos) {
        this.cursos = cursos;
    }
}
